---
id: backend_extension
title: The most powerful backend
---

<div style={{ height: "350px" }}/>

# The most powerful backend of any CMS

FireCMS uses [Firebase](https://firebase.com) as a backend.

Firebase is an app development platform that helps you build and grow apps,
websites and games users love. It is backed by Google and trusted by millions of
businesses around the world. Firebase provides tools for tracking analytics,
reporting and fixing app crashes, creating marketing and product experiment.
It also provides a powerful backend as a service (BaaS) that allows you to
build apps without having to worry about the infrastructure.

:::note
FireCMS not only aims to be a tool to manage your Firebase data, but also to
be the admin/dashboard for your Firebase app.
The seamless real-time integration with Firebase, and all the backend extension
provided by Google, allow to build full companies around it.
:::

## Firebase Authentication

FireCMS uses Firebase Authentication to manage user authentication. It
provides a simple and secure way to authenticate users to your app. It
supports authentication using passwords, phone numbers, popular federated
identity providers like Google, Facebook and Twitter, and more.

## Firebase Storage

FireCMS uses Firebase Storage to store files. It provides a simple and secure
way to store and retrieve user-generated content like images, videos, and audio
files. It also provides a powerful API to manage access control and perform
complex operations like resizing images on the fly.

## Firestore

FireCMS uses Firestore as a database. Firestore is a flexible, scalable
database for mobile, web, and server development from Firebase and Google
Cloud Platform. Like Firebase Realtime Database, it keeps your data in sync
across client apps through realtime listeners and offers offline support for
mobile and web, so you can build responsive apps that work regardless of network
latency or Internet connectivity. Firestore also offers seamless integration
with other Firebase and Google Cloud Platform products, including Cloud
Functions.

## Cloud Functions

FireCMS uses Cloud Functions to provide a serverless backend. Cloud Functions
is a serverless framework that lets you automatically run backend code in
response to events triggered by Firebase features and HTTPS requests. You can
use Cloud Functions to send notifications, aggregate or transform data, or
authenticate users.

## Use case: Data synchronization with an external service

> The power of Cloud functions

Let's see how FireCMS helps [MedicalMotion](https://medicalmotion.com/) to
synchronize the videos of the exercises they use in their platform with
Vimeo.

We use a **Cloud Function** to synchronize the videos with Vimeo. This function
is triggered every time a new video is uploaded to the database. We listen
to the `onWrite` event of the `videos` collection, and we check if the file
field has been modified.

If the file has been modified, we upload the file to Vimeo and we update the
database with the new video URL.

<img loading="lazy"
src="/img/video_sync.png"
alt="Diagram of the video synchronization process"
style={{
width: "100%"
}}/>

We leverage the **real time updates** of Firestore to update a `status` field
in the database. This field is used to show the status of the video in the
CMS. In can take values like `In progress`, `In sync`, `Error`, etc.

<video style={{
maxWidth: "100%",
margin: "16px 0px 32px",
alignSelf: "center"
}}
loop autoPlay muted>
<source src="/img/video_sync.mp4" type="video/mp4"/>
</video>

> The `seconds` field in this video are also updated automatically in
> a separate step.

This is just an example of how you can use FireCMS to build a CMS that is
adaptable to your business logic. Serverless functions are a great way to
extend the functionalities offered by this project and make it even more
powerful.








